//---------------------------------------------------------------------------------------------------------------------------------------------------------//
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
#ifndef _AtomRecord_h__
#define	_AtomRecord_h__
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
#include "libraries.h"
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
class AtomRecord {
  
  private:
    
    int     serial;
    String* atomName;
    char    altLoc;
    String* name;
    char    chainID;
    int     number;
    char    iCode;
    double  x;
    double  y;
    double  z;
    double  occupancy;
    double  tempFactor;
    String* element;
    String* charge;

    String* toString;
    
  protected:
    
    void    CleanData (void);
    
  public:
    
    AtomRecord ();
    AtomRecord (const AtomRecord&);
    AtomRecord (const AtomRecord*);

    ~AtomRecord ();

    void    Serial (int);
    void    AtomName (String*);
    void    AltLoc (char);
    void    Name (String*);
    void    ChainID (char);
    void    Number (int);
    void    ICode (char);
    void    X (double);
    void    Y (double);
    void    Z (double);
    void    Occupancy (double);
    void    TempFactor (double);
    void    Element (String*);
    void    Charge (String*);
    
    int     Serial (void);
    String* AtomName (void);
    char    AltLoc (void);
    String* Name (void);
    char    ChainID (void);
    int     Number (void);
    char    ICode (void);
    double  X (void);
    double  Y (void);
    double  Z (void);
    double  Occupancy (void);
    double  TempFactor (void);
    String* Element (void);
    String* Charge (void);
    
    bool    ReadFromString (String*);
    bool    ReadFromString (char*);
    
    String* ToString (void);  
    
    AtomRecord operator= (const AtomRecord&);
    
};
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
#endif
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
